package cn.tedu.ivos.base.util;

import java.security.SecureRandom;

/* 密码工具类,提供生成随机密码的功能*/
public class PasswordUtil {
    //定义允许出现在密码中的字符集合 大小写字母 数字 特殊字符
    private static final String ALLOWED_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%&*.-_=+";
    //创建一个安全的随机数生成器,用于生成随机密码
    private static final SecureRandom random = new SecureRandom();

    /* 自定义一个生成指定长度的随机密码方法 */
    public static String generateRandomPassword(int length) {
        //参数校验
        if(length <5) throw new RuntimeException("密码长度不能小于5!");
        //创建一个StringBuilder对象,用于保存生成的随机密码
        StringBuilder password = new StringBuilder();
        //循环生成指定长度的密码
        for (int i = 0; i < length; i++) {
            //先获取上方允许出现的字符串长度,在其范围内生一个随机数索引
            int index = random.nextInt(ALLOWED_CHARS.length());
            //根据索引下标获取一个随机字符
            char randomChar = ALLOWED_CHARS.charAt(index);
            //将随机字符添加到密码中
            password.append(randomChar);
        }
        //返回生成的密码
        return password.toString();
    }
}
